import request from './request'
import type { PageResponse } from './request'

// 模板相关接口类型定义
export interface Template {
  id?: number
  bankCode: string
  bankName: string
  templateName: string
  fileType: string
  headerRowIndex: number
  headers: any[],
  fieldMapping: any[]
  remark?: string
  fileUrl?: string
  status?: number
  createTime?: string
  updateTime?: string
}

export interface TemplateSearchParams {
  pageNo: number
  pageSize: number
  bankCode?: string
  bankName?: string
  fileType?: string
  status?: string
}

export interface FieldMapping {
  bankField: string
  standardField: string
  fieldType: string
  columnIndex: number
}

// 模板管理API
export const templateApi = {
  // 分页查询模板列表
  getTemplatePage(params: TemplateSearchParams): Promise<PageResponse<Template>> {
    return request.get('/bs/template/page', params)
  },

  // 根据ID获取模板详情
  getTemplateById(id: number): Promise<Template> {
    return request.get('/bs/template/get', { id })
  },

  // 创建模板
  createTemplate(data: Omit<Template, 'id'>): Promise<Template> {
    return request.post('/bs/template/create', data)
  },

  // 更新模板
  updateTemplate(data: Template): Promise<Template> {
    return request.put('/bs/template/update', data)
  },

  // 删除模板
  deleteTemplate(id: number): Promise<void> {
    return request.delete('/bs/template/delete', { id })
  },

  // 从文件创建模板
  createTemplateFromFile(file: File): Promise<any> {
    const formData = new FormData()
    formData.append('file', file)
    return request.upload(`/bs/template/create-from-file`, formData)
  },

  // 测试模板解析
  testTemplateParse(templateId: number, file: File): Promise<any[]> {
    const formData = new FormData()
    formData.append('file', file)
    return request.upload(`/bs/template/test-parse/${templateId}`, formData)
  }
}